<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>4.7 Dependency Resolution 2.2.1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" href="../css/main.css" type="text/css" media="screen, print" title="Style" charset="utf-8"/>
    <link rel="stylesheet" href="../css/pdf.css" type="text/css" media="print" title="PDF" charset="utf-8"/>
    <script type="text/javascript">
function addJsClass() {
    var classes = document.body.className.split(" ");
    classes.push("js");
    document.body.className = classes.join(" ");
}
    </script>
</head>

<body class="body" onload="addJsClass();">
<div id="navigation">
    <ul>
        <li>
            <div id="nav-summary" onmouseover="toggleNavSummary(false)" onmouseout="toggleNavSummary(true)">
                <a href="../../guide/index.html" class="button">Table of contents</a>

                <div id="nav-summary-childs" style="display:none;">
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/introduction.html"><strong>1</strong><span>Introduction</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/gettingStarted.html"><strong>2</strong><span>Getting Started</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/upgradingFromPreviousVersionsOfGrails.html"><strong>3</strong><span>Upgrading from previous versions of Grails</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/conf.html"><strong>4</strong><span>Configuration</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/commandLine.html"><strong>5</strong><span>The Command Line</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/GORM.html"><strong>6</strong><span>Object Relational Mapping (GORM)</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/theWebLayer.html"><strong>7</strong><span>The Web Layer</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/validation.html"><strong>8</strong><span>Validation</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/services.html"><strong>9</strong><span>The Service Layer</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/testing.html"><strong>10</strong><span>Testing</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/i18n.html"><strong>11</strong><span>Internationalization</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/security.html"><strong>12</strong><span>Security</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/plugins.html"><strong>13</strong><span>Plugins</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/webServices.html"><strong>14</strong><span>Web Services</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/spring.html"><strong>15</strong><span>Grails and Spring</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/hibernate.html"><strong>16</strong><span>Grails and Hibernate</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/scaffolding.html"><strong>17</strong><span>Scaffolding</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/deployment.html"><strong>18</strong><span>Deployment</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0"><a href="../../guide/contributing.html"><strong>19</strong><span>Contributing to Grails</span></a>
                    </div>
                    
                </div>
            </div>
        </li>
        <li class="separator selected">
            <a id="ref-button" onclick="localToggle(); return false;" href="#">Quick Reference</a>
        </li>
    </ul>
</div>
<div id="header">
    <div class="images clearfix">
        
        <span id="logo"><a href="http://grails.org" target="_blank"><img alt="Grails Logo" title="The Grails Framework" src="../../img/grails.png" border="0"/></a></span>
        
        
        <span id="sponsor"><a href="http://springsource.com" target="_blank"><img alt="SpringSource Logo" title="SpringSource - Weapons for the War on Java Complexity" src="../../img/springsource-logo.png" border="0"/></a></span>
        
    </div>
    <p>See the light - agile, industrial strength, rapid web application development made easy</p>
</div>


<table id="colset" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td id="col1">
            <div id="main" class="corner-all">

                
                    <div class="toc-item prev-left"><a href="../../guide/upgradingFromPreviousVersionsOfGrails.html">&lt;&lt; <strong>3</strong><span>Upgrading from previous versions of Grails</span></a></div>
                

                <span id='toggle-col1' class="toggle">(<a href="#" onclick="localToggle(); return false;">Quick Reference</a>)</span>

                
                    <div class="toc-item next-right"><a href="../../guide/commandLine.html"><strong>5</strong><span>The Command Line</span> >></a></div>
                


                <div class="project">
                    <h1>4.7 Dependency Resolution - Reference Documentation</h1>

                    <p><strong>Authors:</strong> Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith</p>

                    <p><strong>Version:</strong> 2.2.1</p>

                    
                </div>

                
                <div id="table-of-content">
                    <h2>Table of Contents</h2>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#configurationsAndDependencies"><strong>4.1</strong><span>Configurations and Dependencies</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#dependencyRepositories"><strong>4.2</strong><span>Dependency Repositories</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#debuggingResolution"><strong>4.3</strong><span>Debugging Resolution</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#inheritedDependencies"><strong>4.4</strong><span>Inherited Dependencies</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#providingDefaultDependencies"><strong>4.5</strong><span>Providing Default Dependencies</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#changingDependencies"><strong>4.6</strong><span>Snapshots and Other Changing Dependencies</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#dependencyReports"><strong>4.7</strong><span>Dependency Reports</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#pluginJARDependencies"><strong>4.8</strong><span>Plugin JAR Dependencies</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#mavenIntegration"><strong>4.9</strong><span>Maven Integration</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#mavendeploy"><strong>4.10</strong><span>Deploying to a Maven Repository</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#pluginDependencies"><strong>4.11</strong><span>Plugin Dependencies</span></a>
                    </div>
                    
                    <div class="toc-item" style="margin-left:0px"><a href="#dependencyResolutionCaching"><strong>4.12</strong><span>Caching of Dependency Resolution Results</span></a>
                    </div>
                    
                </div>
                

                
<a name="3.7 Dependency Resolution"><!-- Legacy link --></a>
<h2 id="ivy">4.7 Dependency Resolution</h2>
Grails features a dependency resolution DSL that lets you control how plugins and JAR dependencies are resolved.<p class="paragraph"/>You specify a <code>grails.project.dependency.resolution</code> property inside the <code>grails-app/conf/BuildConfig.groovy</code> file that configures how dependencies are resolved:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.resolution = &#123;
   // config here
&#125;</pre></div><p class="paragraph"/>The default configuration looks like the following:<p class="paragraph"/><div class="code"><pre>grails.project.class.dir = <span class="java&#45;quote">"target/classes"</span>
grails.project.test.class.dir = <span class="java&#45;quote">"target/test&#45;classes"</span>
grails.project.test.reports.dir = <span class="java&#45;quote">"target/test&#45;reports"</span>
//grails.project.war.file = <span class="java&#45;quote">"target/&#36;&#123;appName&#125;&#45;&#36;&#123;appVersion&#125;.war"</span><p class="paragraph"/>grails.project.dependency.resolution = &#123;
    // inherit Grails' <span class="java&#45;keyword">default</span> dependencies
    inherits(<span class="java&#45;quote">"global"</span>) &#123;
        // uncomment to disable ehcache
        // excludes 'ehcache'
    &#125;
    log <span class="java&#45;quote">"warn"</span>
    repositories &#123;
        grailsPlugins()
        grailsHome()
        grailsCentral()<p class="paragraph"/>        // uncomment these to enable remote dependency resolution
        // from <span class="java&#45;keyword">public</span> Maven repositories
        //mavenCentral()
        //mavenLocal()
        //mavenRepo <span class="java&#45;quote">"http://snapshots.repository.codehaus.org"</span>
        //mavenRepo <span class="java&#45;quote">"http://repository.codehaus.org"</span>
        //mavenRepo <span class="java&#45;quote">"http://download.java.net/maven/2/"</span>
        //mavenRepo <span class="java&#45;quote">"http://repository.jboss.com/maven2/"</span>
    &#125;
    dependencies &#123;
        // specify dependencies here under either 'build', 'compile',
        // 'runtime', 'test' or 'provided' scopes eg.<p class="paragraph"/>        // runtime 'mysql:mysql&#45;connector&#45;java:5.1.16'
    &#125;<p class="paragraph"/>    plugins &#123;
        compile <span class="java&#45;quote">"&#58;hibernate:&#36;grailsVersion"</span>
        compile <span class="java&#45;quote">"&#58;jquery:1.6.1.1"</span>
        compile <span class="java&#45;quote">"&#58;resources:1.0"</span><p class="paragraph"/>        build <span class="java&#45;quote">"&#58;tomcat:&#36;grailsVersion"</span>
    &#125;
&#125;</pre></div><p class="paragraph"/>The details of the above will be explained in the next few sections.<p class="paragraph"/>

<a name="3.7.1 Configurations and Dependencies"><!-- Legacy link --></a>
<h2 id="configurationsAndDependencies">4.7.1 Configurations and Dependencies</h2>
Grails features five dependency resolution configurations (or 'scopes'):
<ul class="star">
<li> <code>build</code>: Dependencies for the build system only</li>
<li> <code>compile</code>: Dependencies for the compile step</li>
<li> <code>runtime</code>: Dependencies needed at runtime but not for compilation (see above)</li>
<li> <code>test</code>: Dependencies needed for testing but not at runtime (see above)</li>
<li> <code>provided</code>: Dependencies needed at development time, but not during WAR deployment</li>
</ul><p class="paragraph"/>Within the <code>dependencies</code> block you can specify a dependency that falls into one of these configurations by calling the equivalent method. For example if your application requires the MySQL driver to function at <code>runtime</code> you can specify that like this:<p class="paragraph"/><div class="code"><pre>runtime 'com.mysql:mysql&#45;connector&#45;java:5.1.16'</pre></div><p class="paragraph"/>This uses the string syntax: <code>group:name:version</code>. You can also use a Map-based syntax:<p class="paragraph"/><div class="code"><pre>runtime group: 'com.mysql',
        name: 'mysql&#45;connector&#45;java',
        version: '5.1.16'</pre></div><p class="paragraph"/>In Maven terminology, <code>group</code> corresponds to an artifact's <code>groupId</code> and <code>name</code> corresponds to its <code>artifactId</code>.<p class="paragraph"/>Multiple dependencies can be specified by passing multiple arguments:<p class="paragraph"/><div class="code"><pre>runtime 'com.mysql:mysql&#45;connector&#45;java:5.1.16',
        'net.sf.ehcache:ehcache:1.6.1'<p class="paragraph"/>// Or<p class="paragraph"/>runtime(
    &#91;group:'com.mysql', name:'mysql&#45;connector&#45;java', version:'5.1.16'&#93;,
    &#91;group:'net.sf.ehcache', name:'ehcache', version:'1.6.1'&#93;
)</pre></div><p class="paragraph"/><h3>Disabling transitive dependency resolution</h3><p class="paragraph"/>By default, Grails will not only get the JARs and plugins that you declare, but it will also get their transitive dependencies. This is usually what you want, but there are occasions where you want a dependency without all its baggage. In such cases, you can disable transitive dependency resolution on a case-by-case basis:<p class="paragraph"/><div class="code"><pre>runtime('com.mysql:mysql&#45;connector&#45;java:5.1.16',
        'net.sf.ehcache:ehcache:1.6.1') &#123;
    transitive = <span class="java&#45;keyword">false</span>
&#125;<p class="paragraph"/>// Or
runtime group:'com.mysql',
        name:'mysql&#45;connector&#45;java',
        version:'5.1.16',
        transitive:<span class="java&#45;keyword">false</span></pre></div><p class="paragraph"/><h3>Excluding specific transitive dependencies</h3><p class="paragraph"/>A far more common scenario is where you want the transitive dependencies, but some of them cause issues with your own dependencies or are unnecessary. For example, many Apache projects have 'commons-logging' as a transitive dependency, but it shouldn't be included in a Grails project (we use SLF4J). That's where the <code>excludes</code> option comes in:<p class="paragraph"/><div class="code"><pre>runtime('com.mysql:mysql&#45;connector&#45;java:5.1.16',
        'net.sf.ehcache:ehcache:1.6.1') &#123;
    excludes <span class="java&#45;quote">"xml&#45;apis"</span>, <span class="java&#45;quote">"commons&#45;logging"</span>
&#125;<p class="paragraph"/>// Or
runtime(group:'com.mysql', name:'mysql&#45;connector&#45;java', version:'5.1.16') &#123;
    excludes(&#91; group: 'xml&#45;apis', name: 'xml&#45;apis'&#93;,
             &#91; group: 'org.apache.httpcomponents' &#93;,
             &#91; name: 'commons&#45;logging' &#93;)</pre></div><p class="paragraph"/>As you can see, you can either exclude dependencies by their artifact ID (also known as a module name) or any combination of group and artifact IDs (if you use the Map notation). You may also come across <code>exclude</code> as well, but that can only accept a single string or Map:<p class="paragraph"/><div class="code"><pre>runtime('com.mysql:mysql&#45;connector&#45;java:5.1.16',
        'net.sf.ehcache:ehcache:1.6.1') &#123;
    exclude <span class="java&#45;quote">"xml&#45;apis"</span>
&#125;</pre></div><p class="paragraph"/><h3>Using Ivy module configurations</h3><p class="paragraph"/>If you use Ivy module configurations and wish to depend on a specific configuration of a module, you can use the <code>dependencyConfiguration</code> method to specify the configuration to use.<p class="paragraph"/><div class="code"><pre>provided(<span class="java&#45;quote">"my.org:web&#45;service:1.0"</span>) &#123;
    dependencyConfiguration <span class="java&#45;quote">"api"</span>
&#125;</pre></div><p class="paragraph"/>If the dependency configuration is not explicitly set, the configuration named <code>"default"</code> will be used (which is also the correct value for dependencies coming from Maven style repositories).<p class="paragraph"/><h3>Where are the JARs?</h3><p class="paragraph"/>With all these declarative dependencies, you may wonder where all the JARs end up. They have to go somewhere after all. By default Grails puts them into a directory, called the dependency cache, that resides on your local file system at <code>user.home</code>/.grails/ivy-cache. You can change this either via the <code>settings.groovy</code> file:<p class="paragraph"/><div class="code"><pre>grails.dependency.cache.dir = <span class="java&#45;quote">"$&#123;userHome&#125;/.my&#45;dependency&#45;cache"</span></pre></div><p class="paragraph"/>or in the dependency DSL:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.resolution = &#123;
    &#8230;
    cacheDir <span class="java&#45;quote">"target/ivy&#45;cache"</span>
    &#8230;
&#125;</pre></div><p class="paragraph"/>The <code>settings.groovy</code> option applies to all projects, so it's the preferred approach.


<a name="3.7.2 Dependency Repositories"><!-- Legacy link --></a>
<h2 id="dependencyRepositories">4.7.2 Dependency Repositories</h2>
<h4>Remote Repositories</h4><p class="paragraph"/>Initially your BuildConfig.groovy does not use any remote public Maven repositories. There is a default <code>grailsHome()</code> repository that will locate the JAR files Grails needs from your Grails installation. To use a public repository, specify it in the <code>repositories</code> block:<p class="paragraph"/><div class="code"><pre>repositories &#123;
    mavenCentral()
&#125;</pre></div><p class="paragraph"/>In this case the default public Maven repository is specified. To use the SpringSource Enterprise Bundle Repository you can use the <code>ebr()</code> method:<p class="paragraph"/><div class="code"><pre>repositories &#123;
    ebr()
&#125;</pre></div><p class="paragraph"/>You can also specify a specific Maven repository to use by URL:<p class="paragraph"/><div class="code"><pre>repositories &#123;
    mavenRepo <span class="java&#45;quote">"http://repository.codehaus.org"</span>
&#125;</pre></div><p class="paragraph"/>and even give it a name:<p class="paragraph"/><div class="code"><pre>repositories &#123;
    mavenRepo name: <span class="java&#45;quote">"Codehaus"</span>, root: <span class="java&#45;quote">"http://repository.codehaus.org"</span>
&#125;</pre></div><p class="paragraph"/>so that you can easily identify it in logs.<p class="paragraph"/><h4>Controlling Repositories Inherited from Plugins</h4><p class="paragraph"/>A plugin you have installed may define a reference to a remote repository just as an application can. By default your application will inherit this repository definition when you install the plugin.<p class="paragraph"/>If you do not wish to inherit repository definitions from plugins then you can disable repository inheritance:<p class="paragraph"/><div class="code"><pre>repositories &#123;
    inherit <span class="java&#45;keyword">false</span>
&#125;</pre></div><p class="paragraph"/>In this case your application will not inherit any repository definitions from plugins and it is down to you to provide appropriate (possibly internal) repository definitions.<p class="paragraph"/><h4>Offline Mode</h4><p class="paragraph"/>There are times when it is not desirable to connect to any remote repositories (whilst working on the train for example!). In this case you can use the <code>offline</code> flag to execute Grails commands and Grails will not connect to any remote repositories:<p class="paragraph"/><div class="code"><pre>grails &#45;&#45;offline run&#45;app</pre></div><p class="paragraph"/><blockquote class="note">
Note that this command will fail if you do not have the necessary dependencies in your local Ivy cache
</blockquote><p class="paragraph"/>You can also globally configure offline mode by setting <code>grails.offline.mode</code> to <code>true</code> in <code>~/.grails/settings.groovy</code> or in your project's <code>BuildConfig.groovy</code> file:<p class="paragraph"/><div class="code"><pre>grails.offline.mode=<span class="java&#45;keyword">true</span></pre></div><p class="paragraph"/><h4>Local Resolvers</h4><p class="paragraph"/>If you do not wish to use a public Maven repository you can specify a flat file repository:<p class="paragraph"/><div class="code"><pre>repositories &#123;
    flatDir name:'myRepo', dirs:'/path/to/repo'
&#125;</pre></div><p class="paragraph"/>To specify your local Maven cache (<code>~/.m2/repository</code>) as a repository:<p class="paragraph"/><div class="code"><pre>repositories &#123;
    mavenLocal()
&#125;</pre></div>
<h4>Custom Resolvers</h4><p class="paragraph"/>If all else fails since Grails builds on Apache Ivy you can specify an Ivy resolver:<p class="paragraph"/><div class="code"><pre>/&#42;
 &#42; Configure our resolver.
 &#42;/
def libResolver = <span class="java&#45;keyword">new</span> org.apache.ivy.plugins.resolver.URLResolver()
&#91;'libraries', 'builds'&#93;.each &#123;<p class="paragraph"/>    libResolver.addArtifactPattern(
            <span class="java&#45;quote">"http://my.repository/&#36;&#123;it&#125;/"</span> +
            <span class="java&#45;quote">"&#91;organisation&#93;/&#91;module&#93;/&#91;revision&#93;/&#91;type&#93;s/&#91;artifact&#93;.&#91;ext&#93;"</span>)<p class="paragraph"/>    libResolver.addIvyPattern(
            <span class="java&#45;quote">"http://my.repository/&#36;&#123;it&#125;/"</span> +
            <span class="java&#45;quote">"&#91;organisation&#93;/&#91;module&#93;/&#91;revision&#93;/&#91;type&#93;s/&#91;artifact&#93;.&#91;ext&#93;"</span>)
&#125;<p class="paragraph"/>libResolver.name = <span class="java&#45;quote">"my&#45;repository"</span>
libResolver.settings = ivySettings<p class="paragraph"/>resolver libResolver</pre></div><p class="paragraph"/>It's also possible to pull dependencies from a repository using SSH. Ivy comes with a dedicated resolver that you can configure and include in your project like so:
<div class="code"><pre><span class="java&#45;keyword">import</span> org.apache.ivy.plugins.resolver.SshResolver
&#8230;
repositories &#123;
    ...<p class="paragraph"/>    def sshResolver = <span class="java&#45;keyword">new</span> SshResolver(
            name: <span class="java&#45;quote">"myRepo"</span>,
            user: <span class="java&#45;quote">"username"</span>,
            host: <span class="java&#45;quote">"dev.x.com"</span>,
            keyFile: <span class="java&#45;keyword">new</span> File(<span class="java&#45;quote">"/home/username/.ssh/id_rsa"</span>),
            m2compatible: <span class="java&#45;keyword">true</span>)<p class="paragraph"/>    sshResolver.addArtifactPattern(
            <span class="java&#45;quote">"/home/grails/repo/&#91;organisation&#93;/&#91;artifact&#93;/"</span> +
            <span class="java&#45;quote">"&#91;revision&#93;/&#91;artifact&#93;&#45;&#91;revision&#93;.&#91;ext&#93;"</span>)<p class="paragraph"/>    sshResolver.latestStrategy =
            <span class="java&#45;keyword">new</span> org.apache.ivy.plugins.latest.LatestTimeStrategy()<p class="paragraph"/>    sshResolver.changingPattern = <span class="java&#45;quote">".&#42;SNAPSHOT"</span><p class="paragraph"/>    sshResolver.setCheckmodified(<span class="java&#45;keyword">true</span>)<p class="paragraph"/>    resolver sshResolver
&#125;</pre></div><p class="paragraph"/>Download the <a href="http://www.jcraft.com/jsch/" target="blank">JSch</a> JAR and add it to Grails' classpath to use the SSH resolver. You can do this by passing the path in the Grails command line:
<div class="code"><pre>grails &#45;classpath /path/to/jsch compile|run&#45;app|etc.</pre></div><p class="paragraph"/>You can also add its path to the <code>CLASSPATH</code> environment variable but be aware this it affects many Java applications. An alternative on Unix is to create an alias for <code>grails -classpath ...</code> so that you don't have to type the extra arguments each time.<p class="paragraph"/><h4>Authentication</h4><p class="paragraph"/>If your repository requires authentication you can configure this using a <code>credentials</code> block:<p class="paragraph"/><div class="code"><pre>credentials &#123;
    realm = <span class="java&#45;quote">".."</span>
    host = <span class="java&#45;quote">"localhost"</span>
    username = <span class="java&#45;quote">"myuser"</span>
    password = <span class="java&#45;quote">"mypass"</span>
&#125;</pre></div><p class="paragraph"/>This can be placed in your <code>USER_HOME/.grails/settings.groovy</code> file using the <code>grails.project.ivy.authentication</code> setting:<p class="paragraph"/><div class="code"><pre>grails.project.ivy.authentication = &#123;
    credentials &#123;
        realm = <span class="java&#45;quote">".."</span>
        host = <span class="java&#45;quote">"localhost"</span>
        username = <span class="java&#45;quote">"myuser"</span>
        password = <span class="java&#45;quote">"mypass"</span>
    &#125;
&#125;</pre></div>


<a name="3.7.3 Debugging Resolution"><!-- Legacy link --></a>
<h2 id="debuggingResolution">4.7.3 Debugging Resolution</h2>
If you are having trouble getting a dependency to resolve you can enable more verbose debugging from the underlying engine using the <code>log</code> method:<p class="paragraph"/><div class="code"><pre>// log level of Ivy resolver, either 'error', 'warn',
// 'info', 'debug' or 'verbose'
log <span class="java&#45;quote">"warn"</span></pre></div><p class="paragraph"/>A common issue is that the checksums for a dependency don't match the associated JAR file, and so Ivy rejects the dependency. This helps ensure that the dependencies are valid. But for a variety of reasons some dependencies simply don't have valid checksums in the repositories, even if they are valid JARs. To get round this, you can disable Ivy's dependency checks like so:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.resolution = &#123;
    &#8230;
    log <span class="java&#45;quote">"warn"</span>
    checksums <span class="java&#45;keyword">false</span>
    &#8230;
&#125;</pre></div><p class="paragraph"/>This is a global setting, so only use it if you have to.


<a name="3.7.4 Inherited Dependencies"><!-- Legacy link --></a>
<h2 id="inheritedDependencies">4.7.4 Inherited Dependencies</h2>
By default every Grails application inherits several framework dependencies. This is done through the line:<p class="paragraph"/><div class="code"><pre>inherits <span class="java&#45;quote">"global"</span></pre></div><p class="paragraph"/>Inside the <code>BuildConfig.groovy</code> file. To exclude specific inherited dependencies you use the <code>excludes</code> method:<p class="paragraph"/><div class="code"><pre>inherits(<span class="java&#45;quote">"global"</span>) &#123;
    excludes <span class="java&#45;quote">"oscache"</span>, <span class="java&#45;quote">"ehcache"</span>
&#125;</pre></div>


<a name="3.7.5 Providing Default Dependencies"><!-- Legacy link --></a>
<h2 id="providingDefaultDependencies">4.7.5 Providing Default Dependencies</h2>
Most Grails applications have runtime dependencies on several jar files that are provided by the Grails framework.  These include libraries like Spring, Sitemesh, Hibernate etc.  When a war file is created, all of these dependencies will be included in it.  But, an application may choose to exclude these jar files from the war.  This is useful when the jar files will be provided by the container, as would normally be the case if multiple Grails applications are deployed to the same container.<p class="paragraph"/>The dependency resolution DSL provides a mechanism to express that all of the default dependencies will be provided by the container. This is done by invoking the <code>defaultDependenciesProvided</code> method and passing <code>true</code> as an argument:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.resolution = &#123;<p class="paragraph"/>    defaultDependenciesProvided <span class="java&#45;keyword">true</span> // all of the <span class="java&#45;keyword">default</span> dependencies will
                                     // be <span class="java&#45;quote">"provided"</span> by the container<p class="paragraph"/>    inherits <span class="java&#45;quote">"global"</span> // inherit Grails' <span class="java&#45;keyword">default</span> dependencies<p class="paragraph"/>    repositories &#123;
        grailsHome()
        &#8230;
    &#125;
    dependencies &#123;
        &#8230;
    &#125;
&#125;</pre></div><p class="paragraph"/><blockquote class="note">
<code>defaultDependenciesProvided</code> must come before <code>inherits</code>, otherwise the Grails dependencies will be included in the war.
</blockquote>


<a name="3.7.11 Changing/Snapshot Dependencies"><!-- Legacy link --></a>
<h2 id="changingDependencies">4.7.6 Snapshots and Other Changing Dependencies</h2>
Typically, dependencies are constant. That is, for a given combination of <code>group</code>, <code>name</code> and <code>version</code> the jar (or plugin) that it refers to will never change. The Grails dependency management system uses this fact to cache dependencies in order to avoid having to download them from the source repository each time. Sometimes this is not desirable. For example, many developers use the convention of a  <em class="italic">snapshot</em>  (i.e. a dependency with a version number ending in “-SNAPSHOT”) that can change from time to time while still retaining the same version number. We call this a "changing dependency".<p class="paragraph"/>Whenever you have a changing dependency, Grails will always check the remote repository for a new version. More specifically, when a changing dependency is encountered during dependency resolution its last modified timestamp in the local cache is compared against the last modified timestamp in the dependency repositories. If the version on the remote server is deemed to be newer than the version in the local cache, the new version will be downloaded and used.<p class="paragraph"/>{info}
Be sure to read the next section on “Dependency Resolution Caching” in addition to this one as it affects changing dependencies.
{info}<p class="paragraph"/>All dependencies (jars and plugins) with a version number ending in <code>-SNAPSHOT</code> are <strong class="bold">implicitly</strong> considered to be changing by Grails. You can also explicitly specify that a dependency is changing by setting the changing flag in the dependency DSL:<p class="paragraph"/><div class="code"><pre>runtime ('org.my:lib:1.2.3') &#123;
    changing = <span class="java&#45;keyword">true</span>
&#125;</pre></div><p class="paragraph"/>There is a caveat to the support for changing dependencies that you should be aware of. Grails will stop looking for newer versions of a dependency once it finds a remote repository that has the dependency.<p class="paragraph"/>Consider the following setup:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.resolution = &#123;
    repositories &#123;
        mavenLocal()
        mavenRepo <span class="java&#45;quote">"http://my.org/repo"</span>
    &#125;
    dependencies &#123;
        compile <span class="java&#45;quote">"myorg:mylib:1.0&#45;SNAPSHOT"</span>
    &#125;</pre></div><p class="paragraph"/>In this example we are using the local maven repository and a remote network maven repository. Assuming that the local Grails dependency and the local Maven cache do not contain the dependency but the remote repository does, when we perform dependency resolution the following actions will occur:
<ul class="star">
<li>maven local repository is searched, dependency not found</li>
<li>maven network repository is searched, dependency is downloaded to the cache and used</li>
</ul><p class="paragraph"/>Note that the repositories are checked in the order they are defined in the <code>BuildConfig.groovy</code> file.<p class="paragraph"/>If we perform dependency resolution again without the dependency changing on the remote server, the following will happen:
<ul class="star">
<li>maven local repository is searched, dependency not found</li>
<li>maven network repository is searched, dependency is found to be the same “age” as the version in the cache so will not be updated (i.e. downloaded)</li>
</ul><p class="paragraph"/>Later on, a new version of <code>mylib 1.0-SNAPSHOT</code> is published changing the version on the server. The next time we perform dependency resolution, the following will happen:
<ul class="star">
<li>maven local repository is searched, dependency not found</li>
<li>maven network repository is searched, dependency is found to newer than version in the cache so will be updated (i.e. downloaded to the cache)</li>
</ul><p class="paragraph"/>So far everything is working well.<p class="paragraph"/>Now we want to test some local changes to the <code>mylib</code> library. To do this we build it locally and install it to the local Maven cache (how doesn't particularly matter). The next time we perform a dependency resolution, the following will occur:
<ul class="star">
<li>maven local repository is searched, dependency is found to newer than version in the cache so will be updated (i.e. downloaded to the cache)</li>
<li>maven network repository is NOT searched as we've already found the dependency</li>
</ul><p class="paragraph"/>This is what we wanted to occur.<p class="paragraph"/>Later on, a new version of <code>mylib 1.0-SNAPSHOT</code> is published changing the version on the server. The next time we perform dependency resolution, the following will happen:
<ul class="star">
<li>maven local repository is searched, dependency is found to be the same “age” as the version in the cache so will not be updated (i.e. downloaded)</li>
<li>maven network repository is NOT searched as we've already found the dependency</li>
</ul><p class="paragraph"/>This is likely to not be the desired outcome. We are now out of sync with the latest published snapshot and will continue to keep using the version from the local maven repository.<p class="paragraph"/>The rule to remember is this: when resolving a dependency, Grails will stop searching as soon as it finds a repository that has the dependency at the specified version number. It will <strong class="bold">not</strong> continue searching all repositories trying to find a more recently modified instance.<p class="paragraph"/>To remedy this situation (i.e. build against the  <em class="italic">newer</em>  version of <code>mylib 1.0-SNAPSHOT</code> in the remote repository), you can either:
<ul class="star">
<li>Delete the version from the local maven repository, or</li>
<li>Reorder the repositories in the <code>BuildConfig.groovy</code> file</li>
</ul><p class="paragraph"/>Where possible, prefer deleting the version from the local maven repository. In general, when you have finished building against a locally built SNAPSHOT always try to clear it from the local maven repository.<p class="paragraph"/><blockquote class="note">
This changing dependency behaviour is an unmodifiable characteristic of the underlying dependency management system that Grails uses, Apache Ivy. It is currently not possible to have Ivy search all repositories to look for newer versions (in terms of modification date) of the same dependency (i.e. the same combination of <code>group</code>, <code>name</code> and <code>version</code>).
</blockquote>


<a name="3.7.6 Dependency Reports"><!-- Legacy link --></a>
<h2 id="dependencyReports">4.7.7 Dependency Reports</h2>
As mentioned in the previous section a Grails application consists of dependencies inherited from the framework, the plugins installed and the application dependencies itself.<p class="paragraph"/>To obtain a report of an application's dependencies you can run the <a href="../ref/Command Line/dependency-report.html" class="commandLine">dependency-report</a> command:<p class="paragraph"/><div class="code"><pre>grails dependency&#45;report</pre></div><p class="paragraph"/>By default this will generate reports in the <code>target/dependency-report</code> directory. You can specify which configuration (scope) you want a report for by passing an argument containing the configuration name:<p class="paragraph"/><div class="code"><pre>grails dependency&#45;report runtime</pre></div>


<a name="3.7.7 Plugin JAR Dependencies"><!-- Legacy link --></a>
<h2 id="pluginJARDependencies">4.7.8 Plugin JAR Dependencies</h2>
<h4>Specifying Plugin JAR dependencies</h4><p class="paragraph"/>The way in which you specify dependencies for a <a href="../guide/single.html#plugins" class="guide">plugin</a> is identical to how you specify dependencies in an application. When a plugin is installed into an application the application automatically inherits the dependencies of the plugin.<p class="paragraph"/>To define a dependency that is resolved for use with the plugin but not  <em class="italic">exported</em>  to the application then you can set the <code>export</code> property of the dependency:<p class="paragraph"/><div class="code"><pre>test('org.spockframework:spock&#45;core:0.5&#45;groovy&#45;1.8') &#123;
    export = <span class="java&#45;keyword">false</span>
&#125;</pre></div><p class="paragraph"/>In this case the Spock dependency will be available only to the plugin and not resolved as an application dependency. Alternatively, if you're using the Map syntax:<p class="paragraph"/><div class="code"><pre>test group: 'org.spockframework', name: 'spock&#45;core',
     version: '0.5&#45;groovy&#45;1.8', export: <span class="java&#45;keyword">false</span></pre></div><p class="paragraph"/><blockquote class="note">
You can use <code>exported = false</code> instead of <code>export = false</code>, but we recommend the latter because it's consistent with the Map argument.
</blockquote><p class="paragraph"/><h4>Overriding Plugin JAR Dependencies in Your Application</h4><p class="paragraph"/>If a plugin is using a JAR which conflicts with another plugin, or an application dependency then you can override how a plugin resolves its dependencies inside an application using exclusions. For example:<p class="paragraph"/><div class="code"><pre>plugins &#123;
    compile(<span class="java&#45;quote">"&#58;hibernate&#58;&#36;grailsVersion"</span>) &#123;
        excludes <span class="java&#45;quote">"javassist"</span>
    &#125;
&#125;<p class="paragraph"/>dependencies &#123;
    runtime <span class="java&#45;quote">"javassist:javassist:3.4.GA"</span>
&#125;</pre></div><p class="paragraph"/>In this case the application explicitly declares a dependency on the "hibernate" plugin and specifies an exclusion using the <code>excludes</code> method, effectively excluding the javassist library as a dependency.


<a name="3.7.8 Maven Integration"><!-- Legacy link --></a>
<h2 id="mavenIntegration">4.7.9 Maven Integration</h2>
When using the Grails Maven plugin, Grails' dependency resolution mechanics are disabled as it is assumed that you will manage dependencies with Maven's <code>pom.xml</code> file.<p class="paragraph"/>However, if you would like to continue using Grails regular commands like <a href="../ref/Command Line/run-app.html" class="commandLine">run-app</a>, <a href="../ref/Command Line/test-app.html" class="commandLine">test-app</a> and so on then you can tell Grails' command line to load dependencies from the Maven <code>pom.xml</code> file instead.<p class="paragraph"/>To do so simply add the following line to your <code>BuildConfig.groovy</code>:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.resolution = &#123;
    pom <span class="java&#45;keyword">true</span>
    ..
&#125;</pre></div><p class="paragraph"/>The line <code>pom true</code> tells Grails to parse Maven's <code>pom.xml</code> and load dependencies from there.


<a name="3.7.9 Deploying to a Maven Repository"><!-- Legacy link --></a>
<h2 id="mavendeploy">4.7.10 Deploying to a Maven Repository</h2>
If you use Maven to build your Grails project, you can use the standard Maven targets <code>mvn install</code> and <code>mvn deploy</code>.
If not, you can deploy a Grails project or plugin to a Maven repository using the <a href="http://grails.org/plugin/maven-publisher" target="blank">maven-publisher</a> plugin.<p class="paragraph"/>The plugin provides the ability to publish Grails projects and plugins to local and remote Maven repositories. There are two key additional targets added by the plugin:
<ul class="star">
<li><strong class="bold">maven-install</strong> - Installs a Grails project or plugin into your local Maven cache</li>
<li><strong class="bold">maven-deploy</strong> - Deploys a Grails project or plugin to a remote Maven repository</li>
</ul><p class="paragraph"/>By default this plugin will automatically generate a valid <code>pom.xml</code> for you unless a <code>pom.xml</code> is already present in the root of the project, in which case this <code>pom.xml</code> file will be used.<p class="paragraph"/><h4>maven-install</h4><p class="paragraph"/>The <code>maven-install</code> command will install the Grails project or plugin artifact into your local Maven cache:<p class="paragraph"/><div class="code"><pre>grails maven&#45;install</pre></div><p class="paragraph"/>In the case of plugins, the plugin zip file will be installed, whilst for application the application WAR file will be installed.<p class="paragraph"/><h4>maven-deploy</h4><p class="paragraph"/>The <code>maven-deploy</code> command will deploy a Grails project or plugin into a remote Maven repository:<p class="paragraph"/><div class="code"><pre>grails maven&#45;deploy</pre></div><p class="paragraph"/>It is assumed that you have specified the necessary <code>&#60;distributionManagement&#62;</code> configuration within a <code>pom.xml</code> or that you specify the <code>id</code> of the remote repository to deploy to:<p class="paragraph"/><div class="code"><pre>grails maven&#45;deploy &#45;&#45;repository=myRepo</pre></div><p class="paragraph"/>The <code>repository</code> argument specifies the 'id' for the repository. Configure the details of the repository specified by this 'id' within your <code>grails-app/conf/BuildConfig.groovy</code> file or in your <code>$USER_HOME/.grails/settings.groovy</code> file:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.distribution = &#123;
    localRepository = <span class="java&#45;quote">"/path/to/my/local"</span>
    remoteRepository(id: <span class="java&#45;quote">"myRepo"</span>, url: <span class="java&#45;quote">"http://myserver/path/to/repo"</span>)
&#125;</pre></div><p class="paragraph"/>The syntax for configuring remote repositories matches the syntax from the <a href="http://maven.apache.org/ant-tasks/reference.html#remoteRepository" target="blank">remoteRepository</a> element in the Ant Maven tasks. For example the following XML:<p class="paragraph"/><div class="code"><pre>&#60;remoteRepository id=<span class="java&#45;quote">"myRepo"</span> url=<span class="java&#45;quote">"scp://localhost/www/repository"</span>&#62;
    &#60;authentication username=<span class="java&#45;quote">"..."</span> privateKey=<span class="java&#45;quote">"&#36;&#123;user.home&#125;/.ssh/id_dsa"</span>/&#62;
&#60;/remoteRepository&#62;</pre></div><p class="paragraph"/>Can be expressed as:<p class="paragraph"/><div class="code"><pre>remoteRepository(id: <span class="java&#45;quote">"myRepo"</span>, url: <span class="java&#45;quote">"scp://localhost/www/repository"</span>) &#123;
    authentication username: <span class="java&#45;quote">"..."</span>, privateKey: <span class="java&#45;quote">"&#36;&#123;userHome&#125;/.ssh/id_dsa"</span>
&#125;</pre></div><p class="paragraph"/>By default the plugin will try to detect the protocol to use from the URL of the repository (ie "http" from "http://.." etc.), however to specify a different protocol you can do:<p class="paragraph"/><div class="code"><pre>grails maven&#45;deploy &#45;&#45;repository=myRepo &#45;&#45;protocol=webdav</pre></div><p class="paragraph"/>The available protocols are:
<ul class="star">
<li>http</li>
<li>scp</li>
<li>scpexe</li>
<li>ftp</li>
<li>webdav</li>
</ul><p class="paragraph"/><h4>Groups, Artifacts and Versions</h4><p class="paragraph"/>Maven defines the notion of a 'groupId', 'artifactId' and a 'version'. This plugin pulls this information from the Grails project conventions or plugin descriptor.<p class="paragraph"/><h5>Projects</h5><p class="paragraph"/>For applications this plugin will use the Grails application name and version provided by Grails when generating the <code>pom.xml</code> file. To change the version you can run the <code>set-version</code> command:<p class="paragraph"/><div class="code"><pre>grails set&#45;version 0.2</pre></div><p class="paragraph"/>The Maven <code>groupId</code> will be the same as the project name, unless you specify a different one in Config.groovy:<p class="paragraph"/><div class="code"><pre>grails.project.groupId=<span class="java&#45;quote">"com.mycompany"</span></pre></div><p class="paragraph"/><h5>Plugins</h5><p class="paragraph"/>With a Grails plugin the <code>groupId</code> and <code>version</code> are taken from the following properties in the <code>GrailsPlugin.groovy</code> descriptor:<p class="paragraph"/><div class="code"><pre><span class="java&#45;object">String</span> groupId = 'myOrg'
<span class="java&#45;object">String</span> version = '0.1'</pre></div><p class="paragraph"/>The 'artifactId' is taken from the plugin name. For example if you have a plugin called <code>FeedsGrailsPlugin</code> the <code>artifactId</code> will be "feeds". If your plugin does not specify a <code>groupId</code> then this defaults to "org.grails.plugins".


<a name="3.7.10 Plugin Dependencies"><!-- Legacy link --></a>
<h2 id="pluginDependencies">4.7.11 Plugin Dependencies</h2>
As of Grails 1.3 you can declaratively specify plugins as dependencies via the dependency DSL instead of using the <a href="../ref/Command Line/install-plugin.html" class="commandLine">install-plugin</a> command:<p class="paragraph"/><div class="code"><pre>grails.project.dependency.resolution = &#123;
    &#8230;
    repositories &#123;
        &#8230;
    &#125;<p class="paragraph"/>    plugins &#123;
        runtime ':hibernate:1.2.1'
    &#125;<p class="paragraph"/>    dependencies &#123;
        &#8230;
    &#125;
    &#8230;
&#125;</pre></div><p class="paragraph"/>If you don't specify a group id the default plugin group id of <code>org.grails.plugins</code> is used. You can specify to use the latest version of a particular plugin by using "latest.integration" as the version number:<p class="paragraph"/><div class="code"><pre>plugins &#123;
    runtime ':hibernate:latest.integration'
&#125;</pre></div><p class="paragraph"/><h4>Integration vs. Release</h4><p class="paragraph"/>The "latest.integration" version label will also include resolving snapshot versions. To not include snapshot versions then use the "latest.release" label:<p class="paragraph"/><div class="code"><pre>plugins &#123;
    runtime ':hibernate:latest.release'
&#125;</pre></div><p class="paragraph"/><blockquote class="note">
The "latest.release" label only works with Maven compatible repositories. If you have a regular SVN-based Grails repository then you should use "latest.integration".
</blockquote><p class="paragraph"/>And of course if you use a Maven repository with an alternative group id you can specify a group id:<p class="paragraph"/><div class="code"><pre>plugins &#123;
    runtime 'mycompany:hibernate:latest.integration'
&#125;</pre></div><p class="paragraph"/><h4>Plugin Exclusions</h4><p class="paragraph"/>You can control how plugins transitively resolves both plugin and JAR dependencies using exclusions. For example:<p class="paragraph"/><div class="code"><pre>plugins &#123;
    runtime(':weceem:0.8') &#123;
        excludes <span class="java&#45;quote">"searchable"</span>
    &#125;
&#125;</pre></div><p class="paragraph"/>Here we have defined a dependency on the "weceem" plugin which transitively depends on the "searchable" plugin. By using the <code>excludes</code> method you can tell Grails  <em class="italic">not</em>  to transitively install the searchable plugin. You can combine this technique to specify an alternative version of a plugin:<p class="paragraph"/><div class="code"><pre>plugins &#123;
    runtime(':weceem:0.8') &#123;
        excludes <span class="java&#45;quote">"searchable"</span> // excludes most recent version
    &#125;
    runtime ':searchable:0.5.4' // specifies a fixed searchable version
&#125;</pre></div><p class="paragraph"/>You can also completely disable transitive plugin installs, in which case no transitive dependencies will be resolved:<p class="paragraph"/><div class="code"><pre>plugins &#123;
    runtime(':weceem:0.8') &#123;
        transitive = <span class="java&#45;keyword">false</span>
    &#125;
    runtime ':searchable:0.5.4' // specifies a fixed searchable version
&#125;</pre></div>


<a name="3.7.12 Dependency Resolution Caching"><!-- Legacy link --></a>
<h2 id="dependencyResolutionCaching">4.7.12 Caching of Dependency Resolution Results</h2>
As a performance optimisation, Grails does not resolve dependencies for every command invocation. Even with all the necessary dependencies downloaded and cached, resolution may take a second or two. To minimise this cost, Grails caches the result of dependency resolution (i.e. the location on the local file system of all of the declared dependencies, typically inside the dependency cache) and reuses this result for subsequent commands when it can reasonably expect that nothing has changed.<p class="paragraph"/>Grails only performs dependency resolution under the following circumstances:
<ul class="star">
<li>The project is clean (i.e. fresh checkout or after <code>grails clean</code>)</li>
<li>The <code>BuildConfig.groovy</code> file has changed since the last command was run</li>
<li>The <code>&#45;&#45;refresh-dependencies</code> command line switch is provided to the command (any command)</li>
<li>The <code>refresh-dependencies</code> command is the command being executed</li>
</ul><p class="paragraph"/>Generally, this strategy works well and you can ignore dependency resolution caching. Every time you change your dependencies (i.e. modify <code>BuildConfig.groovy</code>) Grails will do the right thing and resolve your new dependencies.<p class="paragraph"/>However, when you have  <em class="italic">changing</em>  or  <em class="italic">dynamic</em>  dependencies you will have to consider dependency resolution caching.<p class="paragraph"/>{info}
A  <em class="italic">changing</em>  dependency is one whose version number does not change, but its contents do (like a SNAPSHOT). A  <em class="italic">dynamic</em>  dependency is one that is defined as one of many possible options (like a dependency with a version range, or symbolic version number like <code>latest.integration</code>).
{info}<p class="paragraph"/>Both  <em class="italic">changing</em>  and  <em class="italic">dynamic</em>  dependencies are influenced by the environment. With caching active, any changes to the environment are effectively ignored. For example, your project may not automatically fetch the very latest version of a dependency when using <code>latest.integration</code>. Or if you declare a <code>SNAPSHOT</code> dependency, you may not automatically get the latest that's available on the server.<p class="paragraph"/>To ensure you have the correct version of a  <em class="italic">changing</em>  or  <em class="italic">dynamic</em>  dependency in your project, you can:
<ul class="star">
<li>clean the project</li>
<li>run the <code>refresh-dependencies</code> command</li>
<li>run  <em class="italic">any</em>  command with the <code>&#45;&#45;refresh-dependencies</code> switch; or</li>
<li>make a change to <code>BuildConfig.groovy</code></li>
</ul><p class="paragraph"/>If you have your CI builds configured to not perform clean builds, it may be worth adding the <code>&#45;&#45;refresh-dependencies</code> switch to the command you use to build your projects.



                <div style="clear:both;margin-top:15px;"></div>
                
                    <div class="toc-item prev-left"><a href="../../guide/upgradingFromPreviousVersionsOfGrails.html">&lt;&lt; <strong>3</strong><span>Upgrading from previous versions of Grails</span></a></div>
                
                    <div class="toc-item next-right"><a href="../../guide/commandLine.html"><strong>5</strong><span>The Command Line</span> >></a></div>
                
                <div style="clear:both"></div>
            </div>
        </td>
        <td id="col2">
            <div class="local clearfix">
                <div class="local-title">
                    <a href="../../guide/index.html" target="mainFrame">Quick Reference</a>
                    <span class="toggle">(<a href="#" onclick="localToggle(); return false;">hide</a>)</span>
                </div>
                <div class="menu">
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Command Line</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Command%20Line/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/add-proxy.html">add-proxy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/alias.html">alias</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/bootstrap.html">bootstrap</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/bug-report.html">bug-report</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/clean.html">clean</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/clear-proxy.html">clear-proxy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/compile.html">compile</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/console.html">console</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-app.html">create-app</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-controller.html">create-controller</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-domain-class.html">create-domain-class</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-filters.html">create-filters</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-hibernate-cfg-xml.html">create-hibernate-cfg-xml</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-integration-test.html">create-integration-test</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-multi-project-build.html">create-multi-project-build</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-plugin.html">create-plugin</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-pom.html">create-pom</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-scaffold-controller.html">create-scaffold-controller</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-script.html">create-script</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-service.html">create-service</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-tag-lib.html">create-tag-lib</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/create-unit-test.html">create-unit-test</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/dependency-report.html">dependency-report</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/doc.html">doc</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/generate-all.html">generate-all</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/generate-controller.html">generate-controller</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/generate-views.html">generate-views</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/help.html">help</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/init.html">init</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/install-dependency.html">install-dependency</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/install-plugin.html">install-plugin</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/install-templates.html">install-templates</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/integrate-with.html">integrate-with</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/interactive.html">interactive</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/list-plugin-updates.html">list-plugin-updates</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/list-plugins.html">list-plugins</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/migrate-docs.html">migrate-docs</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/package-plugin.html">package-plugin</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/package.html">package</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/plugin-info.html">plugin-info</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/refresh-dependencies.html">refresh-dependencies</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/remove-proxy.html">remove-proxy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/run-app.html">run-app</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/run-script.html">run-script</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/run-war.html">run-war</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/schema-export.html">schema-export</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/set-proxy.html">set-proxy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/set-version.html">set-version</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/shell.html">shell</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/stats.html">stats</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/stop-app.html">stop-app</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/test-app.html">test-app</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/uninstall-plugin.html">uninstall-plugin</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/upgrade.html">upgrade</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/war.html">war</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Command%20Line/wrapper.html">wrapper</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Constraints</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Constraints/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Constraints/attributes.html">attributes</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/bindable.html">bindable</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/blank.html">blank</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/creditCard.html">creditCard</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/email.html">email</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/inList.html">inList</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/matches.html">matches</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/max.html">max</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/maxSize.html">maxSize</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/min.html">min</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/minSize.html">minSize</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/notEqual.html">notEqual</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/nullable.html">nullable</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/range.html">range</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/scale.html">scale</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/size.html">size</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/unique.html">unique</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/url.html">url</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/validator.html">validator</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Constraints/widget.html">widget</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Controllers</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Controllers/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Controllers/actionName.html">actionName</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/afterInterceptor.html">afterInterceptor</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/allowedMethods.html">allowedMethods</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/beforeInterceptor.html">beforeInterceptor</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/bindData.html">bindData</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/chain.html">chain</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/controllerName.html">controllerName</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/defaultAction.html">defaultAction</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/flash.html">flash</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/forward.html">forward</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/grailsApplication.html">grailsApplication</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/params.html">params</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/redirect.html">redirect</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/render.html">render</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/request.html">request</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/response.html">response</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/servletContext.html">servletContext</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/session.html">session</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/withForm.html">withForm</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Controllers/withFormat.html">withFormat</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Database Mapping</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/autoImport.html">autoImport</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/autoTimestamp.html">autoTimestamp</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/batchSize.html">batchSize</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/cache.html">cache</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/cascade.html">cascade</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/column.html">column</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/comment.html">comment</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/discriminator.html">discriminator</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/dynamicInsert.html">dynamicInsert</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/dynamicUpdate.html">dynamicUpdate</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/fetch.html">fetch</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/id.html">id</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/ignoreNotFound.html">ignoreNotFound</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/indexColumn.html">indexColumn</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/insertable.html">insertable</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/joinTable.html">joinTable</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/lazy.html">lazy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/order.html">order</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/sort.html">sort</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/table.html">table</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/type.html">type</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/updateable.html">updateable</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Database%20Mapping/version.html">version</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Domain Classes</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/addTo.html">addTo</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/attach.html">attach</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/belongsTo.html">belongsTo</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/clearErrors.html">clearErrors</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/constraints.html">constraints</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/count.html">count</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/countBy.html">countBy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/createCriteria.html">createCriteria</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/delete.html">delete</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/discard.html">discard</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/embedded.html">embedded</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/errors.html">errors</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/executeQuery.html">executeQuery</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/executeUpdate.html">executeUpdate</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/exists.html">exists</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/fetchMode.html">fetchMode</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/find.html">find</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findAll.html">findAll</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findAllBy.html">findAllBy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findAllWhere.html">findAllWhere</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findBy.html">findBy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findOrCreateBy.html">findOrCreateBy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findOrCreateWhere.html">findOrCreateWhere</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findOrSaveBy.html">findOrSaveBy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findOrSaveWhere.html">findOrSaveWhere</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/findWhere.html">findWhere</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/first.html">first</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/get.html">get</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/getAll.html">getAll</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/getDirtyPropertyNames.html">getDirtyPropertyNames</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/getPersistentValue.html">getPersistentValue</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/hasErrors.html">hasErrors</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/hasMany.html">hasMany</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/hasOne.html">hasOne</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/ident.html">ident</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/instanceOf.html">instanceOf</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/isAttached.html">isAttached</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/isDirty.html">isDirty</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/last.html">last</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/list.html">list</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/listOrderBy.html">listOrderBy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/load.html">load</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/lock.html">lock</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/mappedBy.html">mappedBy</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/mapping.html">mapping</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/merge.html">merge</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/namedQueries.html">namedQueries</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/properties.html">properties</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/read.html">read</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/refresh.html">refresh</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/removeFrom.html">removeFrom</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/save.html">save</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/transients.html">transients</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/validate.html">validate</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/where.html">where</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/whereAny.html">whereAny</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/withCriteria.html">withCriteria</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/withNewSession.html">withNewSession</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/withSession.html">withSession</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Domain%20Classes/withTransaction.html">withTransaction</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Plug-ins</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Plug-ins/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/URL%20mappings.html">URL mappings</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/codecs.html">codecs</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/controllers.html">controllers</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/core.html">core</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/dataSource.html">dataSource</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/domainClasses.html">domainClasses</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/filters.html">filters</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/hibernate.html">hibernate</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/i18n.html">i18n</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/logging.html">logging</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/scaffolding.html">scaffolding</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/services.html">services</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/servlets.html">servlets</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Plug-ins/web%20flow.html">web flow</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Services</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Services/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Services/scope.html">scope</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Services/transactional.html">transactional</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Servlet API</h1><div class="menu-sub">
                        
                            
                            <div class="menu-item"><a href="../../ref/Servlet%20API/request.html">request</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Servlet%20API/response.html">response</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Servlet%20API/servletContext.html">servletContext</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Servlet%20API/session.html">session</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Tag Libraries</h1><div class="menu-sub">
                        
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/Usage.html">Usage</a></div>
                            
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/actionName.html">actionName</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/controllerName.html">controllerName</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/flash.html">flash</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/pageScope.html">pageScope</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/params.html">params</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/request.html">request</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/response.html">response</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/servletContext.html">servletContext</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tag%20Libraries/session.html">session</a>
                            </div>
                            
                            </div>
                    </div>
                    
                    <div class="menu-block"><h1 class="menu-title" onclick="toggleRef(this.parentNode.childNodes[1])">Tags</h1><div class="menu-sub">
                        
                            
                            <div class="menu-item"><a href="../../ref/Tags/actionSubmit.html">actionSubmit</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/actionSubmitImage.html">actionSubmitImage</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/applyLayout.html">applyLayout</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/checkBox.html">checkBox</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/collect.html">collect</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/cookie.html">cookie</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/country.html">country</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/countrySelect.html">countrySelect</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/createLink.html">createLink</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/createLinkTo.html">createLinkTo</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/currencySelect.html">currencySelect</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/datePicker.html">datePicker</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/each.html">each</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/eachError.html">eachError</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/else.html">else</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/elseif.html">elseif</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/external.html">external</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/field.html">field</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/fieldValue.html">fieldValue</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/findAll.html">findAll</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/form.html">form</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/formRemote.html">formRemote</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/formatBoolean.html">formatBoolean</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/formatDate.html">formatDate</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/formatNumber.html">formatNumber</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/grep.html">grep</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/hasErrors.html">hasErrors</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/header.html">header</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/hiddenField.html">hiddenField</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/if.html">if</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/img.html">img</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/include.html">include</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/isAvailable.html">isAvailable</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/isNotAvailable.html">isNotAvailable</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/javascript.html">javascript</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/join.html">join</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/layoutBody.html">layoutBody</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/layoutHead.html">layoutHead</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/layoutTitle.html">layoutTitle</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/link.html">link</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/localeSelect.html">localeSelect</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/message.html">message</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/meta.html">meta</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/pageProperty.html">pageProperty</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/paginate.html">paginate</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/passwordField.html">passwordField</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/radio.html">radio</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/radioGroup.html">radioGroup</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/remoteField.html">remoteField</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/remoteFunction.html">remoteFunction</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/remoteLink.html">remoteLink</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/render.html">render</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/renderErrors.html">renderErrors</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/resource.html">resource</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/select.html">select</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/set.html">set</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/setProvider.html">setProvider</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/sortableColumn.html">sortableColumn</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/submitButton.html">submitButton</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/submitToRemote.html">submitToRemote</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/textArea.html">textArea</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/textField.html">textField</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/timeZoneSelect.html">timeZoneSelect</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/unless.html">unless</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/uploadForm.html">uploadForm</a>
                            </div>
                            
                            <div class="menu-item"><a href="../../ref/Tags/while.html">while</a>
                            </div>
                            
                            </div>
                    </div>
                    
                </div>
            </div>
        </td>
    </tr>
</table>

<div id="footer">
    Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.
    Sponsored by <a href="http://springsource.com">SpringSource</a>
</div>

<script type="text/javascript" src="../js/docs.js"></script>

</body>
</html>
